'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.default = insertAtCursor;

var _hasParent = require('./hasParent');

var _hasParent2 = _interopRequireDefault(_hasParent);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * 在指定容器的指定光标位置插入内容节点
 * @param node
 * @param container
 */
function insertAtCursor(node, container) {
    var selection = window.getSelection();
    var range;
    //判断全局的选择是否指定区域内
    if (container && (!selection.anchorNode || !(0, _hasParent2.default)(selection.anchorNode, container))) {
        container.focus();
        range = document.createRange();
        range.selectNodeContents(container);
        range.setStart(container, container.childNodes.length);
    } else {
        range = selection.getRangeAt(0);
    }
    //插入到范围的开始点
    range.insertNode(node);
    //设置范围的开始点到插入的内容之后（即把光标显示在插入内容之后，否则是在之前的）
    range.setStartAfter(node);
    //刷新选择的内容（一个Selection只允许有一个Range，因这里的Range有改变过，故需在add前清除掉）
    selection.removeAllRanges();
    selection.addRange(range);
}